Вход

Просмотр полной версии : Передать таблицу javascript в php.


apapen
28.01.2015, 01:01
Здравствуйте. Уже не один день бьюсь над проблемой, перелопатил кучу информации хотел сам додуматься но не могу, уже мозг кипит.
Подскажите или направьте, как мне этот код передать в PHP. Мне нужно его в скрипт PHP принять. Спасибо всем кто неравнодушен.
<script>
$(document).ready(function() {


var s = "";

s += "<tr class='TRpanierHD'>";
s += "<td>Nom</td>";
s += "<td>Matière</td>";
s += "<td>Épaisseur</td>";
s += "<td>Dimensions</td>";
s += "<td>Prix TTC</td>";
s += "<td>[X]</td>";
s += "</tr>";

var L = fnNRpanierOBJ();

var i,j,LD;
var sum;
sum = 0;
var aDIM;
for (i = 0; i < L; i++) if (fnLS("panier.pc." + i + ".name") != 'unknown') {
s += "<tr class='TRpanierItem' onmouseout='fnPanierHideImage(this," + i + ")'>";

s += "<td id='PSI" + i + "'>";
s += "<span class='PR panierPCimage'></span>";
s += "<span class='SPpanierName' name='nom'>";
s += fnLS("panier.pc." + i + ".namestr");
s += (fnLS("panier.pc." + i + ".chr") == "unknown") ? "" : " (" + fnLS("panier.pc." + i + ".chr") + ")";
s += "</span>";
s += "<br />";
s += "(catégorie: " + fnLS("panier.pc." + i + ".categorystr") + ")";
s += "</td>";
s += "<td class='TAC'>" + aMAT[parseInt(fnLS("panier.pc." + i + ".matIX"))] + "</td>";
s += "<td class='TAR'>" + fnLS("panier.pc." + i + ".epMM") + " mm</td>";

s += "<td>";

LD = fnLS("panier.pc." + i + ".dim");
aDIM = LD.split('*');
LD = aDIM.length;
for (j = 0; j < LD; j++) {
s += (j == 0) ? "" : "<br />";
s += String.fromCharCode(97 + j);
s += ": " + aDIM[j] + " mm";
}
s += "</td>";

sum += fnPCitemPrice(fnLS("panier.pc." + i + ".price"));
s += "<td class='TAR'>" + "<span class='SPpanierPrice'>" + fnLS("panier.pc." + i + ".price") + "</span> &euro;</td>";
s += "<td><img class='PP' src='_include/img/close.png' onclick='fnPanierPCdelete(this," + i + ")'/></td>";
s += "</tr>";
}
sum = parseFloat(sum);
sum = sum.toFixed(2);
sum = sum.toString();
sum = sum.replace(/\./,",");
s += "<tr class='TRpanierSum'>";
s += "<td><input type='submit' name='submit' value=''></td>";
s += "<td colspan='6' class='TAR'><span class='SPpanierPrice'>"+sum+"</span> &euro;</td>";
s += "</tr>";

$(s).appendTo($('table#TBpanier'));

});
</script>
<div class="span">
<form class="FL span9" action="./test.php" method="get">

<table id='TBpanier' class='FL span9'></table>
</form>
</div>

Vlasenko Fedor
28.01.2015, 02:03
как мне этот код передать в PHP
напиши в html и не мучайся
Мне нужно его в скрипт PHP принять
эт ты о чем счас, что значит принять. Может получить. и ...
Объясни подробно, что надо то

apapen
28.01.2015, 02:16
Эта таблица корзины магазина. Я вот тоже уже склонялся к тому чтобы переделать на PHP но при подробном анализе выяснил что по времени будет очень долго. Если есть желание помочь могу дать ссылку.

При нажатие добавить в корзину в этой таблице отображаются детали заказа (металлических изделий) мне нужно эти детали дальше обработать, (подключить платежный шлюз, вывести в деталях заказа(Invoice) и т.д.) и вот тут стопор. Здесь идет подсчет общей суммы. Плюс заказанный товар храниться в LocalStorage. Просто кода javascript много если переделывать то все придется.

Если в терминологии ошибся извиняюсь.

Vlasenko Fedor
28.01.2015, 02:20
почитай
отправка данных формами
отправка данных с помощью аякс

тебе ведь только значения нужны, вот их и надо отправлять. Все остальное мусор. :)

apapen
28.01.2015, 02:26
Так это же таблица или значения не имеет? Плюс курил долго аякс, так тоже и не вышло. Пустые значения приходят или может проблема глубже?

danik.js
28.01.2015, 02:27
Просто кода javascript много
Помоему в этом коде больше html, чем JavaScript:D
Ты если хочешь на клиенте генерить, то хотя бы подключи простенький js-шаблонизатор. А что касается передачи в PHP - дык лучше передать чисто данные, а не таблицу ввиде html, не? Но для этого у тебя должно быть нормальное разделение данных и представления (хотяб шаблонизатор), а то ты все в кучу свалил.

apapen
28.01.2015, 02:32
Ребят не нападайте) Сам за одним мастером доделываю честно. Поэтому может где что то упустил. И теперь задача стоит использовать базы данных.

Vlasenko Fedor
28.01.2015, 02:37
И теперь задача стоит использовать базы данных
Упорство, труд, все перетрут :lol:

apapen
28.01.2015, 02:40
Да уж, хотел время с экономить а получилось как всегда. Так что уважаемые гуру программирования оставить всю эту затею да переписать все, очень плох код?

apapen
28.01.2015, 02:44
А что касается передачи в PHP - дык лучше передать чисто данные, а не таблицу ввиде html, не?
Так в этом то и проблема данные тоже поступают как бы javascript.

// ================================================
// slider and price calculatorLettres and Chiffres
// ================================================
function fnInitSliders() {
var Aval = $('#sliderA').slider('value');
$('#INPvalA').val(Aval);
}

// ================================================
function fnShowPrice() {
if ($('#PCprice').css('display') == 'block') {
window.clearTimeout(TOprice);
TOprice = window.setTimeout(function() {
var Aval = $('#sliderA').slider('value');
var matiereIX = OBJcurrentMatiere.attr('data-ix');
var myEP = $('div#PCcolumn1 div.PCep div a.current label').html();

var priceHT = Aval * Aval * myEP * aCOEFd[matiereIX] * aCOEFz[matiereIX];
priceHT = (priceHT < priceMIN) ? priceMIN : priceHT; // minimum price
document.forms['FRMprice'].elements['INPpriceHT'].value = fnFormatPrice(priceHT);
document.forms['FRMprice'].elements['INPpriceTTC'].value = fnFormatPrice((priceHT + valFP) * valVATrate);
}, MSprice); // END setTimeout
}
}

$(document).ready(function() {

// =================================================
$('#sliderA').slider({
animate: true,
orientation: 'horizontal',
range: 'max',
max: 2000, // fixed : not changed by JS
min: 20, // fixed : not changed by JS
value: 20,
slide: function(event,ui) {
$('#INPvalA').val(ui.value);
fnShowPrice();
}
});

fnInitSliders();

// =================================================
//
$("div.PCmatiere a").on("mousedown",
function() {
var TFresizeColumns = false; // corrected :
if ($(this) !== OBJcurrentMatiere) { // do not click current
if (OBJcurrentMatiere) { // reset previous selected item
OBJcurrentMatiere.removeClass("current");
OBJcurrentMatiere.addClass("opt");

OBJcurrentEPset.removeClass("DB");
OBJcurrentEPset.addClass("DN");
$("input", OBJcurrentEPset).prop("disabled", true);
$("input", OBJcurrentEPset).prop("checked", false); // reset EP-radio-buttons : user should select EP again
if (OBJepRD) { // reset previous selected item
OBJepRD.removeClass("current");
OBJepRD.addClass("opt");
window.OBJepRD = null;
}
} else { // first time click any Matiere
$("#PCcolumn1").height("auto");
TFresizeColumns = true;
}
OBJcurrentMatiere = $(this);
OBJcurrentMatiere.removeClass("opt");
OBJcurrentMatiere.addClass("current");

OBJcurrentEPset = $("#RDepList"+$(this).attr("data-ix")); // prop() does NOT function here !?
OBJcurrentEPset.removeClass("DN");
OBJcurrentEPset.addClass("DB");
$("input",OBJcurrentEPset).prop("disabled",false);

if (TFresizeColumns) {
fnTFresizeColumns();
}
$("#PCprice").css("display","none"); // visiter must select an ep first
}
}
);
$("div.PCmatiere a").on("mouseup",
function() {
window.setTimeout("fnBlurCurrentMatiere()",50); // some delay needed !?
}
);



$("div.PCep input").prop("disabled",true); // only the EP-radio-buttons of a selected material will be included in the POST

//noinspection JSJQueryEfficiency,JSJQueryEfficiency
$("div.PCep a").on("mousedown",
function() {
if ($(this) !== OBJepRD) { // do not click current
if (OBJepRD) { // reset previous selected item
OBJepRD.removeClass("current");
OBJepRD.addClass("opt");
}
OBJepRD = $(this);
OBJepRD.removeClass("opt");
OBJepRD.addClass("current");
$("#PCprice").css("display","block");
fnShowPrice(); // custom function for each product;
}
}
);

$("div.PCep a").on("mouseup",
function() {
window.setTimeout("fnBlurEPradio()",50); // some delay needed !?
}
);

fnTFresizeColumns();

}); // ### END document.ready
// ================================================
//

apapen
28.01.2015, 02:47
И вот еще, спойлер не нашел.


var TOprice; // TimeOut ID
var MSprice = 300; // delay in MilliSeconds

var OBJcurrentMatiere = null;
var OBJcurrentEPset = null;
var OBJepRD;
OBJepRD = null;

var priceMIN = 5;
var valFP = 15;
var valVATrate = 1.196;

var aCOEFd = new Array(5);
aCOEFd[0] = 0.0000078; // Acier brut
aCOEFd[1] = 0.0000078; // Acier décapé
aCOEFd[2] = 0.0000028; // Aluminium
aCOEFd[3] = 0.0000078; // Inox brossé
aCOEFd[4] = 0.0000078; // Inox brut

var aCOEFz = new Array(5);
aCOEFz[0] = 1.8; // Acier brut
aCOEFz[1] = 2; // Acier décapé
aCOEFz[2] = 12; // Aluminium
aCOEFz[3] = 12; // Inox brossé
aCOEFz[4] = 10; // Inox brut

// ================================================
function fnAddToCart(category,categorystr,name,namestr,imag ewh,nrdim,price,chr) {
var i;
var NRix = fnNRpanierOBJ(); // new item in panier has IndeX NR

localStorage["panier.pc."+NRix+".chr"] = chr;
localStorage["panier.pc."+NRix+".imagewh"] = imagewh;

localStorage["panier.pc."+NRix+".categorystr"] = categorystr;
localStorage["panier.pc."+NRix+".namestr"] = namestr;

localStorage["panier.pc."+NRix+".category"] = category;
localStorage["panier.pc."+NRix+".name"] = name;

var matIX = OBJcurrentMatiere.attr('data-ix');
localStorage["panier.pc."+NRix+".matIX"] = matIX.toString();

var RDix = null;
var MATname = OBJcurrentMatiere.attr('data-name');
var L = document.getElementsByName('RDep_'+MATname).length ;
for (i=0;i < L;i++) {
if ($('#RDep_'+MATname+i).get(0).checked) {
RDix = i;
break;
}
}
localStorage["panier.pc."+NRix+".epMM"] = $('#RDep_'+MATname+RDix).get(0).value.toString();

var dim = "";
for (i=0;i < nrdim;i++) {
dim += (dim == "") ? "" : "*";
dim += $('#INPval'+String.fromCharCode(65+i)).val();
}
localStorage["panier.pc."+NRix+".dim"] = dim;
localStorage["panier.pc."+NRix+".price"] = price;

// keep the record : current # items in panier (increase this # but some can be deleted)
NRix++;
localStorage["panier.pc.nr"] = NRix.toString();
$('#SPmonPanierNR').html(fnNRpanierOBJpresent());
}

// ================================================
function fnBlurCurrentMatiere() {
$('input',OBJcurrentMatiere).blur();
}

// ================================================
function fnBlurEPradio() {
$('input',OBJepRD).blur();
}

// ================================================
function fnTFresizeColumns() {
var maxH = 0;
var C1 = $("#PCcolumn1").height();
var C2 = $("#PCcolumn2").height();
var C3 = $("#PCcolumn3").height();
maxH = (C1 > maxH) ? C1 : maxH;
maxH = (C2 > maxH) ? C2 : maxH;
maxH = (C3 > maxH) ? C3 : maxH;
$("#PCcolumn1").height(maxH);
$("#PCcolumn2").height(maxH);
$("#PCcolumn3").height(maxH);
}

// ================================================
function fnFormatPrice(n) {
n = "" + Math.round(100 * n);
var Ls = n.length;
n = n.substr(0,Ls-2) + ',' + n.substr(Ls-2,2);
return n;
}

// ================================================
function fnSymbolChange(TH) {
$('#chr').text($(TH).val());
}

apapen
28.01.2015, 14:56
Нашел решение своей проблемы. Как оказалось все гораздо проще чем я думал, действительно нужно было из таблицы взять данные и передать в input hidden, а далее посредством формы отправил скрипту php).

Всем спасибо!